package lock

import (
	"github.com/slclub/go-tips"
	"sync"
	"time"
)

/**
 * 普通的锁，智能控制住一个进程的 并发执行；
 * 如果控制住多线程并发，需要使用此锁；
 */

/**
 * RLock()：加读锁
 * RUnlock()：解读锁
 */

type LockSync struct {
	rw      sync.Locker
	lockkey string
}

func New() *LockSync {
	n := time.Now().UnixMicro()
	x := tips.Rand.Intn(1000)
	key := tips.String(n) + tips.String(x)
	key = "lock:" + key
	return &LockSync{
		rw:      &sync.Mutex{},
		lockkey: key,
	}
}

func (self *LockSync) Lock() {
	self.rw.Lock()
	//in := cache.Incr(1)

}

func (self *LockSync) Unlock() {
	self.rw.Unlock()
}
